package com.woniuxy.api;


import com.woniuxy.common.Result;
import com.woniuxy.form.OrderForm;
import com.woniuxy.form.OrderTransferForm;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@FeignClient(value = "order",contextId = "order")
public interface OrderApi {

    /**
     * 用户下单后调用平台生成订单
     * 生成订单后 发送信息至酒店
     * @param orderForm
     * @return
     */
    @PostMapping("/userPlaceOrder")
    Result userPlaceOrder(@RequestBody OrderForm orderForm);

//    /**
//     *
//     * @param orderForm
//     * @return
//     */
//    @PostMapping("/addOrder")
//    public Result addOrder(@RequestBody OrderForm orderForm);

    /**
     * 动态查询订单
     * 酒店端条件：酒店id全查询，酒店id和状态查询订单（已完成的订单，未完成的订单）分页展示
     * @param hotelId
     * @param status
     * @param pageIdx
     * @return
     */
    @GetMapping("/hotelQueryOrder")
    Result hotelQueryOrder(@RequestParam(value = "hotelId")Integer hotelId,
                                 @RequestParam(value = "status")Integer status,
                                 @RequestParam(value = "pageIdx",required = false,defaultValue="5")Integer pageIdx);


    /**
     * 动态查询订单
     * 用户端条件：用户id全查询，状态查询订单（酒店是否接受订单）分页展示
     * @param hotelId
     * @param status
     * @param pageIdx
     * @return
     */
    @GetMapping("/userQueryOrder")
    Result userQueryOrder(@RequestParam(value = "userId")Integer hotelId,
                          @RequestParam(value = "status")Integer status,
                          @RequestParam(value = "pageIdx",required = false,defaultValue="5")Integer pageIdx);

    /**
     * 平台查看流水 根据时间 查询已完成支付的订单 分页展示
     * @param pageIdx
     * @return
     */
    @GetMapping("/lookOnedayWater")
    Result lookOnedayWater(@RequestParam(value = "pageIdx",required = false,defaultValue="10")Integer pageIdx);


    /**
     * 酒店接受信息后，商家对订单的处理，接受发送信息至用户
     * @param hotelId
     * @return
     */
    @PutMapping("/hotelManageOrder")
    Result hotelManageOrder(@RequestParam(value = "hotelId")Integer hotelId,@RequestParam(value = "bool")Boolean bool);

    /**
     * 用户接受到订单的处理结果
     * 再完成支付（调用优惠券模块）（调用支付宝接口），同时再修改酒店房间状态
     */
    @PostMapping("/payMoney")
    Result payMoney();


    //查询所有已完成订单的id和金额（平台转账给商家的判断依据，订单完成 才转给商家）
    @GetMapping("/order/findOrderByStatus")
    public List<OrderTransferForm> findOrderByStatus();

    //根据订单id修改订单状态
    @PostMapping("/order/modifyOrderStatus")
    public Result modifyOrderStatus( @RequestParam(value = "status")Integer status,@RequestParam(value = "orderId")Integer orderId);

    @GetMapping("/send")
    public Result send(@RequestParam(value = "routingKing")String routingKing);









}
